// middlewares/logger.go
package middlewares

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"time"
)

func RequestLogger() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 记录请求开始时间
		startTime := time.Now()

		// 处理请求
		c.Next()

		// 计算延迟
		latency := time.Since(startTime)

		// 获取客户端IP
		clientIP := c.ClientIP()

		// 日志格式
		logMessage := fmt.Sprintf("[%s] %s %s %d %s | IP: %s",
			startTime.Format("2006-01-02 15:04:05"),
			c.Request.Method,
			c.Request.URL.Path,
			c.Writer.Status(),
			latency,
			clientIP,
		)

		// 输出到控制台（生产环境应改为文件）
		fmt.Println(logMessage)

		// 可选：记录到上下文（供后续中间件使用）
		c.Set("requestLatency", latency)
	}
}
